/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.its.dsw2.escuela.view;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import mx.its.dsw2.escuela.bl.AlumnoBlLocal;
import mx.its.dsw2.escuela.bl.AsistenciaBlLocal;
import mx.its.dsw2.escuela.bl.CursoBlLocal;
import mx.its.dsw2.escuela.modelo.Alumno;
import mx.its.dsw2.escuela.modelo.Asistencia;
import mx.its.dsw2.escuela.modelo.Curso;

/**
 *
 * @author Maq-8
 */
@ManagedBean
@SessionScoped
public class AssistanceBean {

    @EJB
    private AlumnoBlLocal alumnoBl;
    @EJB
    private CursoBlLocal cursoBl;
    @EJB
    private AsistenciaBlLocal asistenciaBl;
    private Asistencia assistance;
    private String accion = "";
    private List<Asistencia> lista;
    private List<Alumno> listAlumnos;
    private int idCursoSeleccionado;
    private String noControlAlumno;
    private boolean visible = false;
    private Alumno student;
    private Curso grade;

    public AssistanceBean() {
        assistance = new Asistencia();
        listAlumnos = new ArrayList<Alumno>();
    }

    public Curso getGrade() {
        return grade;
    }

    public void setGrade(Curso grade) {
        this.grade = grade;
    }

    public String getNoControlAlumno() {
        return noControlAlumno;
    }

    public void setNoControlAlumno(String noControlAlumno) {
        this.noControlAlumno = noControlAlumno;
    }

    public boolean isVisible() {
        return visible;
    }

    public void setVisible(boolean visible) {
        this.visible = visible;
    }

    public Alumno getStudent() {
        return student;
    }

    public void setStudent(Alumno student) {
        this.student = student;
    }

    public Asistencia getAssistance() {
        return assistance;
    }

    public void setAssistance(Asistencia assistance) {
        this.assistance = assistance;
    }

    public List<Asistencia> getLista() {
        lista = asistenciaBl.getAll();
        return lista;
    }

    public List<Alumno> getListAlumnos() {
        return listAlumnos;
    }

    public void setListAlumnos(List<Alumno> listAlumnos) {
        this.listAlumnos = listAlumnos;
    }

    public int getIdCursoSeleccionado() {
        return idCursoSeleccionado;
    }

    public void setIdCursoSeleccionado(int idCursoSeleccionado) {
        this.idCursoSeleccionado = idCursoSeleccionado;
    }

    public void agregarAlumno(ActionEvent evt) {
        Alumno a = alumnoBl.findByNoControl(noControlAlumno);
        if (a != null && !listAlumnos.contains(a)) {
            listAlumnos.add(a);
        }
    }

    public void mostrarContenido(ActionEvent evt) {
        System.out.println("HOLAAAAAAAAAAAAAAAAA:" +idCursoSeleccionado);
        visible = true;
        grade = cursoBl.findById(idCursoSeleccionado);
    }

    public String procesarAccion() {
        if (accion.equalsIgnoreCase("Nuevo")) {
            assistance.setIdCurso(grade);
            asistenciaBl.register(assistance, listAlumnos);
        }
        if (accion.equalsIgnoreCase("TakeBack")) {
        }
        accion = "";
        return "AssistanceList";
    }

    public String procesarLlamada() {
        String page = "";
        if (accion.equalsIgnoreCase("Nuevo")) {
            page = "AssistanceCreateEdit";
        } else {
            if (accion.equalsIgnoreCase("Eliminar")) {
                page = "AssistanceList";
            }
        }
        return page;
    }

//Listeners
    public void prepararNuevo(ActionEvent evt) {
        accion = "Nuevo";
        assistance = new Asistencia();
        grade = new Curso();
        listAlumnos.clear();
        visible = false;
    }

    public void prepararEditar(ActionEvent evt) {
        accion = "Editar";
        int index = Integer.parseInt(evt.getComponent().getClientId().split(":")[2]);
        assistance = lista.get(index);
    }

    public void prepararEliminar(ActionEvent evt) {
        accion = "Eliminar";
        int index = Integer.parseInt(evt.getComponent().getClientId().split(":")[2]);
        assistance = lista.get(index);
    }

    public void eliminarAlumnoLista(ActionEvent evt) {
        int index = Integer.parseInt(evt.getComponent().getClientId().split(":")[2]);
        listAlumnos.remove(index);
    }
}
